package com.ruoyi.system.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 物料使用单位枚举（对应useUnit字段）
 */
@Getter
@AllArgsConstructor
@ApiModel(value = "UseUnitEnum", description = "物料使用单位枚举（1=平方，2=投影，3=米，4=项，5=组）")
public enum UseUnitEnum {

    @ApiModelProperty(value = "平方")
    SQUARE(1, "平方"),

    @ApiModelProperty(value = "投影")
    PROJECTION(2, "投影"),

    @ApiModelProperty(value = "米")
    METER(3, "米"),

    @ApiModelProperty(value = "项")
    ITEM(4, "项"),

    @ApiModelProperty(value = "组")
    GROUP(5, "组");

    @EnumValue // MyBatis-Plus枚举映射（数据库存储值）
    private final Integer code;

    @JsonValue // 序列化时返回描述
    private final String desc;

    /**
     * 根据code获取枚举
     */
    public static UseUnitEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        return Arrays.stream(values())
                .filter(enumItem -> enumItem.code.equals(code))
                .findFirst()
                .orElse(null);
    }
}